package ai.people.platform.archives.service;

import ai.people.netmon.framework.domain.archives.entity.GangGroupInfo;
import ai.people.netmon.framework.domain.archives.request.GangGroupListRequest;
import ai.people.netmon.framework.domain.archives.request.GangGroupSaveOrUpdateRequest;
import ai.people.netmon.framework.domain.archives.vo.*;
import ai.people.netmon.framework.model.response.PageResponse;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zhenglin
 * @since 2022-06-21
 */
public interface GangGroupInfoService extends IService<GangGroupInfo> {

    /**
     * 团伙列表
     *
     * @param request 请求
     * @return {@link PageResponse}<{@link List}<{@link GangGroupListVO}>>
     */
    PageResponse<GangGroupListVO> listGangGroup(GangGroupListRequest request);

    /**
     * 保存团伙(基本详情+组织关系)
     *
     * @param group 集团
     * @throws Exception 异常
     */
    void saveGangGroupGraph(GangGroupSaveOrUpdateRequest group) throws Exception;

    /**
     * 团伙详情-图
     *
     * @param id id
     * @return {@link GangGroupDetailVO}
     * @throws Exception 异常
     */
    GangGroupDetailVO getGangGroupGraph(Long id) throws Exception;

    /**
     * 团伙成员列表-图
     *
     * @param id
     * @return {@link List}<{@link GangGroupOrgPersonListVO}>
     * @throws Exception 异常
     */
    List<GangGroupOrgPersonListVO> listGangGroupPersonGraph(Long id) throws Exception;

    /**
     * 更新团伙(基本详情+组织关系)
     *
     * @param group 集团
     * @throws Exception 异常
     */
    void updateGangGroupGraph(GangGroupSaveOrUpdateRequest group) throws Exception;
}
